/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mycompany.pagoxusuario.controllers;

import com.mycompany.pagoxusuario.entidades.PagoxUsuario;
import com.mycompany.pagoxusuario.entidades.TributoMulta;
import com.mycompany.pagoxusuario.entidades.Pago;
import com.mycompany.pagoxusuario .persistence.JPAUtil;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

/**
 *
 * @author josediaz
 */
@ManagedBean
@ViewScoped
public class PagoxUsuarioBean implements Serializable {

    static final long serialVersionUID = -8780407253943723401L;
    private PagoxUsuario pagoxusuario;
    private List<PagoxUsuario> pagoxusuarios;
    private TributoMulta tributomulta; // util para buscar los pagos (combo en cascada)

    @PostConstruct
    public void init() {
        pagoxusuario = new PagoxUsuario();
    }

    public PagoxUsuario getPagoxUsuario() {
        return pagoxusuario;
    }

    public void setPagoxUsuario(PagoxUsuario pagoxusuario) {
        this.pagoxusuario = pagoxusuario;
    }

    public String grabar(PagoxUsuario auto) {
        EntityManager em = JPAUtil.getEntityManager();
        em.persist(auto);

        JPAUtil.evictCache(em, PagoxUsuario.LISTAR_DESTACADOS);

        FacesMessage msg = new FacesMessage("PagoxUsuario grabado con exito!");
        FacesContext.getCurrentInstance().addMessage(null, msg);

        return "listar";
    }

  /*  public void buscarPagoxUsuarios (Pago pago) {

        String jpql = "select a from PagoxUsuario a where 1=1";
        Map<String, Object> params = new HashMap<>();
        if (pago.getTributoMulta() != null) {
            jpql += " and a.pago.tributomulta = :tributomulta";
            params.put("tributomulta", pago.getTributoMulta());
        }
        if (pago.getResolucion()!= null && !pago.getResolucion().isEmpty()) {
            jpql += " and a.pago.resolucion like :resolucion";
            params.put("resolucion", "%" + pago.getResolucion()+ "%");
        }

        TypedQuery<PagoxUsuario> query = JPAUtil.getEntityManager().createQuery(jpql, PagoxUsuario.class);
        for (Map.Entry<String, Object> param : params.entrySet()) {

            query.setParameter(param.getKey(), param.getValue());
        }

        pagoxusuarios = query.getResultList();
    }
  */

    public List<PagoxUsuario> getPagoxUsuarios () {
        if (pagoxusuarios  == null) {
            pagoxusuarios  = JPAUtil.getEntityManager().
                    createNamedQuery(PagoxUsuario.LISTAR_DESTACADOS, PagoxUsuario.class).getResultList();
        }

        return pagoxusuarios ;
    }

    public TributoMulta getTributoMulta() {
        return tributomulta;
    }

    public void setTributoMulta(TributoMulta tributomulta) {
        this.tributomulta = tributomulta;
    }
}
